# install face_recognition package
import subprocess
import sys
# -- uncomment --
subprocess.check_call([sys.executable, "-m", "pip", "install", "face_recognition"])
!pip install face_recognition
Requirement already satisfied: face_recognition in /usr/local/lib/python3.10/dist-packages (1.3.0) Requirement already satisfied: face-recognition-models>=0.3.0 in /usr/local/lib/python3.10/dist-packages (from face_recognition) (0.3.0) Requirement already satisfied: Click>=6.0 in /usr/local/lib/python3.10/dist-packages (from face_recognition) (8.1.7) Requirement already satisfied: dlib>=19.7 in /usr/local/lib/python3.10/dist-packages (from face_recognition) (19.24.2) Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from face_recognition) (1.23.5) Requirement already satisfied: Pillow in /usr/local/lib/python3.10/dist-packages (from face_recognition) (9.4.0)
# import libraries
import requests
import zipfile
import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# image stuff
import face_recognition
from PIL import Image, ImageDraw, ImageFont, ImageFilter, ImageOps, ImageEnhance
from google.colab.patches import cv2_imshow
from google.colab import drive
drive.mount('/content/drive')
Mounted at /content/drive
files.remove('.ipynb_checkpoints')
# Define the URL of the image file
image_file = "/content/drive/MyDrive/CSV Uploads/Eric_Mayo.jpg"
# open an image
image = Image.open(image_file)
# Get the original size of the image
width, height = image.size
print("Original image size:", width, height)
# Resize the image to half its original size
new_size = (int(width/2), int(height/2))
resized_image = image.resize(new_size)
new_width, new_height = resized_image.size
print("Resized image size:", new_width, new_height)
# Display the image in the Colab notebook
display(resized_image)
# Get the new size of the image
Original image size: 4032 3024 Resized image size: 2016 1512
match_file = pd.read_excel("/content/drive/MyDrive/CSV Uploads/FinalMatchSourceTarget.xlsx")
match_file.head()
| match_id | source_image | name | target_image | expected_match | |
|---|---|---|---|---|---|
| 0 | 100 | Bingyu_Li.jpg | Bingyu_Li | Bingyu_Li_aged.jpg | match |
| 1 | 101 | Whitney_Joyce_Isbell.jpg | Whitney_Joyce_Isbell | Whitney_Joyce_Isbell_aged.jpg | match |
| 2 | 102 | Qian_Chen.jpg | Qian_Chen | Qian_Chen_aged.jpg | match |
| 3 | 103 | Hanshuai_Shi.jpg | Hanshuai_Shi | Hanshuai_Shi_aged.jpg | match |
| 4 | 104 | Ruochen_Bao.jpg | Ruochen_Bao | Ruochen_Bao_aged.jpg | match |
# 1. load two faces using load_image_file
face_file1 = "/content/drive/MyDrive/CSV Uploads/Eric_Mayo.jpg"
face_file2 = "/content/drive/MyDrive/CSV Uploads/Eric_Mayo_aged.jpg"
image1 = face_recognition.load_image_file(face_file1)
image2 = face_recognition.load_image_file(face_file2)
# 2. Compare the face_encodings similarity using face_distance
img1_encoding = face_recognition.face_encodings(image1)[0]
img2_encoding = face_recognition.face_encodings(image2)[0]
# Calculate the distance between the faces
face_distance = face_recognition.face_distance([img1_encoding], img2_encoding)
# Normalize the distance to get the similarity score
similarity = 1 - face_distance[0]
# Print the similarity score
print("The two faces are '{:.2f}%' similar".format(similarity*100))
The two faces are '62.09%' similar
# 3. is it a match?
face_matches = face_recognition.compare_faces([img1_encoding], img2_encoding)
# Print the result
if face_matches[0]:
print("The two faces match")
else:
print("The two faces do not match")
The two faces match
# 4. Display Side by Side
# Open the two image files
image1 = Image.open(face_file1)
image2 = Image.open(face_file2)
# Get the dimensions of the images
width1, height1 = image1.size
width2, height2 = image2.size
# Create a new blank image with a size equal to the sum of the widths of the two images
new_image = Image.new("RGB", (width1 + width2, max(height1, height2)))
# Paste the first image onto the new image at position (0, 0)
new_image.paste(image1, (0, 0))
# Paste the second image onto the new image at position (width1, 0)
new_image.paste(image2, (width1, 0))
# Add text to the image
text = '{} % MATCH'.format(int(similarity*100))
font = ImageFont.truetype("/content/drive/MyDrive/CSV Uploads/Roboto-Medium.ttf", size=48)
draw = ImageDraw.Draw(new_image)
text_width, text_height = draw.textsize(text, font)
left = 900
top = 100
right = left + text_width
bottom = top + text_height
draw.rectangle(((left, top), (right, bottom)), fill=(255, 255, 255, 128))
draw.text((left, top), text, font=font, fill=(0, 0, 0, 255))
# Save the new image to a file
new_image.save("merged_image.jpg")
# Display the new image
new_image.show()
<ipython-input-9-59ba36c6dbef>:24: DeprecationWarning: textsize is deprecated and will be removed in Pillow 10 (2023-07-01). Use textbbox or textlength instead. text_width, text_height = draw.textsize(text, font)
dir_name = 'images'
def list_jpeg_files(directory):
"""List all JPEG files in the specified directory."""
jpeg_files = [file for file in os.listdir(directory) if file.lower().endswith(('.jpeg', '.jpg'))]
return jpeg_files
# Replace 'your_directory_path' with the path to the directory you want to search
directory_path = '/content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students'
jpeg_files = list_jpeg_files(directory_path)
print("JPEG files in the directory:", jpeg_files)
JPEG files in the directory: ['Angela_Waszkiewicz.jpg', 'Whitney_Joyce_Isbell.jpg', 'Manling_Shi_aged.jpg', 'Joseph_Macon_Barker_aged.jpg', 'Yue_Zhou.jpg', 'Jodie_Elizabeth_Brine.jpg', 'Meryl_Criswell_Kaduboski.jpg', 'Boyu_Zheng_aged.jpg', 'Tianyi_Yin_aged.jpg', 'Qian_Chen.jpg', 'Yuchen_Qin_aged.jpg', 'Shuzhe_Wang_aged.jpg', 'Christopher_Craig_Kenney_aged.jpg', 'Tianyu_Cui.jpg', 'Jacob_Philip_Rockaway.jpg', 'Kendall_Ashley_Hilson.jpg', 'Marcus_Cole_cooper.jpg', 'Yilin_Wang.jpg', 'Helen_Kidane_Haile.jpg', 'Edward_Cheongjoun_Hyun.jpg', 'Bintong_Zhai.jpg', 'Shanay_Nimish_Sonawala_aged.jpg', 'Alfredo_Enrique_Suarez_aged_aged.jpg', 'Anoush_U_Shah_aged.jpg', 'Benjamin_Pyung-Hwa_Aikens_aged.jpg', 'Logan_Trujillo_aged.jpg', 'Michelle_Monica_Saikali.jpg', 'Amanda_Renner_Gild.jpg', 'Cheuk_Yui_Marcus_Chan.jpg', 'Garhett_William_Sessions.jpg', 'Haopeng_Liu_aged.jpg', 'Lu_Xing.jpg', 'Natalie_Weiner.jpg', 'Christopher_David_Koontz.jpg', 'Jodie_Elizabeth_Brine_aged.jpg', 'Shenghao_Yang.jpg', 'Zihe_Liu_aged.jpg', 'Shenzhe_Lian_aged.jpg', 'Kyle_John_Wiblishauser_aged.jpg', 'Kaitlyn_R_Vickers.jpg', 'Millie_C_Garrett_aged.jpg', 'Ruochen_Bao_aged.jpg', 'Zaul_Alexander_Perez_aged.jpg', 'Chioke_K_Bellamy.jpg', 'Alfredo_Enrique_Suarez_aged.jpg', 'Reid_Powers_Walker.jpg', 'Jiaming_Zhang_aged.jpg', 'Hanshuai_Shi.jpg', 'Jiahao_Ma.jpg', 'Boyu_Zheng.jpg', 'Ruochen_Bao.jpg', 'Cole_Ritchey_aged.jpg', 'Skylour_Sebastian_Winakur.jpg', 'Ryan_Marek_Smith_aged.jpg', 'Guangxin_Bao_aged.jpg', 'Jax_Francis_Revfi.jpg', 'Estefani_Santiago_Gatica.jpg', 'Harve_E_Criqui_aged.jpg', 'Anne_M_Perry_aged.jpg', 'Hangfei_Lyu.jpg', 'Xiyan_Huang_aged.jpg', 'Millie_C_Garrett.jpg', 'Hanshuai_Shi_aged.jpg', 'Andrew_Dubois_aged.jpg', 'Manling_Shi.jpg', 'Elizabeth_G_Higgins.jpg', 'Wei_Tan_aged.jpg', 'Dillon_Hunter_Aryeh_aged.jpg', 'Nicolson_Charles_Panos_aged.jpg', 'Evan_Anderson_Gilbert.jpg', 'Chengzhan_Shen_aged.jpg', 'Xiyue_Yu_aged.jpg', 'Edward_Cheongjoun_Hyun_aged.jpg', 'Jacob_Philip_Rockaway_aged.jpg', 'Emmanuel_Thomas_George_Skora.jpg', 'Mengyao_Liu.jpg', 'Zihe_Liu.jpg', 'Eric_Mayo_aged.jpg', 'Raleigh_Coolidge_Conway_aged.jpg', 'Marcus_Cole_cooper_aged.jpg', 'Natalie_Weiner_aged.jpg', 'Zaul_Alexander_Perez.jpg', 'Jackson_R_Harper_aged.jpg', 'Hangfei_Lyu_aged.jpg', 'Andrew_Lloyd_Loftis.jpg', 'Savannah_Kayla_Littlejohn.jpg', 'Bingnan_Lei_aged.jpg', 'Jax_Francis_Revfi_aged.jpg', 'Niklas_Jozef_Baldis.jpg', 'Xiaoyang_Zheng.jpg', 'Xiyan_Huang.jpg', 'Haopeng_Liu.jpg', 'Andrea_Chen_aged.jpg', 'Khushi_Arya.jpg', 'Patrick_Ryan_Weimaker.jpg', 'Wentong_Guo_aged.jpg', 'Xingyu_Wan.jpg', 'Jeremy_Brian_Nurding.jpg', 'Khushi_Arya_aged.jpg', 'Yiming_Xu_aged.jpg', 'Sebastian_Andres_Lopez-Ibanez_aged.jpg', 'Joseph_Macon_Barker.jpg', 'Jiaming_Zhang.jpg', 'Jiahua_Wu_aged.jpg', 'Logan_Trujillo.jpg', 'Evan_Anderson_Gilbert_aged.jpg', 'Kyle_John_Wiblishauser.jpg', 'Mary_Martha_Milcoff.jpg', 'Cole_Ritchey.jpg', 'Hewei_Shen_aged.jpg', 'John_William_Null_aged.jpg', 'Anthony_X_Ayala_aged.jpg', 'Luying_Huang_aged.jpg', 'Allen_Gail_Smith_aged.jpg', 'Alicia_Rand_Bodoia_aged.jpg', 'George_Basil_Economus.jpg', 'Qian_Chen_aged.jpg', 'Max_Koontz.jpg', 'Bintong_Zhai_aged.jpg', 'Latham_Alexander_Weaver_aged.jpg', 'Angela_Waszkiewicz_aged.jpg', 'Nathanael_Hunter_Kraus_aged.jpg', 'Anoush_U_Shah.jpg', 'Lu_Xing_aged.jpg', 'Chengzhan_Shen.jpg', 'Yuchen_Qin.jpg', 'Xiaoyang_Zheng_aged.jpg', 'Amanda_Renner_Gild_aged.jpg', 'Mary_Michele_Troise_aged.jpg', 'Shenzhe_Lian.jpg', 'Jiahao_Ma_aged.jpg', 'Jennifer_Ontiveros-Olivas.jpg', 'Sebastian_Andres_Lopez-Ibanez.jpg', 'Jeremy_Brian_Nurding_aged.jpg', 'Allen_Gail_Smith.jpg', 'Shenger_Zhou_aged.jpg', 'Shenghao_Yang_aged.jpg', 'Jackson_R_Harper.jpg', 'Estefani_Santiago_Gatica_aged.jpg', 'Kaushik_Rajaram_aged.jpg', 'Andrew_Lloyd_Loftis_aged.jpg', 'Guangxin_Bao.jpg', 'Nathalie_Lisa_Friedman_aged.jpg', 'Siyu_Lin_aged.jpg', 'Alicia_Rand_Bodoia.jpg', 'Kayla_Marie_Williams_aged.jpg', 'Yanghua_Zhang_aged.jpg', 'Bryce_Charles_Drynan.jpg', 'Anne_M_Perry.jpg', 'Boyan_Wei_aged.jpg', 'Bingnan_Lei.jpg', 'Qin_Miao_aged.jpg', 'Savannah_Kayla_Littlejohn_aged.jpg', 'Tianyi_Yin.jpg', 'Songlin_Liu.jpg', 'Helen_Kidane_Haile_aged.jpg', 'Nicholas_J_Sundberg_aged.jpg', 'Luying_Huang.jpg', 'Tianyi_Chen_aged.jpg', 'Michelle_Monica_Saikali_aged.jpg', 'Michael_Jason_Vejsiri.jpg', 'Kayla_Marie_Williams.jpg', 'Meryl_Criswell_Kaduboski_aged.jpg', 'Xiyue_Yu.jpg', 'Latham_Alexander_Weaver.jpg', 'Kaushik_Rajaram.jpg', 'Yutong_Ouyang.jpg', 'Garhett_William_Sessions_aged.jpg', 'Andrea_Chen.jpg', 'Jiahua_Wu.jpg', 'Cheuk_Yui_Marcus_Chan_aged.jpg', 'Xiaoyu_Zong.jpg', 'Dillon_Hunter_Aryeh.jpg', 'Siyu_Lin.jpg', 'Whitney_Joyce_Isbell_aged.jpg', 'Andrew_Dubois.jpg', 'Daniel_Madden_Sheedy_aged.jpg', 'Mary_Michele_Troise.jpg', 'Shenger_Zhou.jpg', 'Skylour_Sebastian_Winakur_aged.jpg', 'Nathanael_Hunter_Kraus.jpg', 'Tianyu_Cui_aged.jpg', 'Jiacheng_Wang_aged.jpg', 'Dongqiao_Tang_aged.jpg', 'Michael_Jason_Vejsiri_aged.jpg', 'Max_Koontz_aged.jpg', 'Tianyi_Chen.jpg', 'Yiming_Xu.jpg', 'Patrick_Ryan_Weimaker_aged.jpg', 'Raleigh_Coolidge_Conway.jpg', 'Shuzhe_Wang.jpg', 'Lauren_Elizabeth_Johnson.jpg', 'George_Basil_Economus_aged.jpg', 'Hewei_Shen.jpg', 'Reid_Powers_Walker_aged.jpg', 'Wentong_Guo.jpg', 'Xiaoyu_Zong_aged.jpg', 'Samantha_O_Brien_aged.jpg', 'Wei_Tan.jpg', 'Jennifer_Ontiveros-Olivas_aged.jpg', 'Joseph_Miller_Hirsch_aged.jpg', 'Trinity_Nicole_Elliott_aged.jpg', 'Bryce_Charles_Drynan_aged.jpg', 'Benjamin_Pyung-Hwa_Aikens.jpg', 'Jiacheng_Wang.jpg', 'Ryan_Marek_Smith.jpg', 'Harve_E_Criqui.jpg', 'Emmanuel_Thomas_George_Skora_aged.jpg', 'Meghan_O_Malley_aged.jpg', 'Yutong_Ouyang_aged.jpg', 'Joseph_Miller_Hirsch.jpg', 'Kendall_Ashley_Hilson_aged.jpg', 'Qin_Miao.jpg', 'Xiaoya_Luo.jpg', 'Samantha_O_Brien.jpg', 'Christopher_David_Koontz_aged.jpg', 'Yanghua_Zhang.jpg', 'Nicolson_Charles_Panos.jpg', 'Niklas_Jozef_Baldis_aged.jpg', 'Meghan_O_Malley.jpg', 'Bingyu_Li_aged.jpg', 'Yilin_Wang_aged.jpg', 'Anthony_X_Ayala.jpg', 'Christopher_Craig_Kenney.jpg', 'Xingyu_Wan_aged.jpg', 'Alfredo_Enrique_Suarez.jpg', 'Xiaoya_Luo_aged.jpg', 'Bingyu_Li.jpg', 'Nicholas_J_Sundberg.jpg', 'Kaamil_Farooqi_aged.jpg', 'Kaitlyn_R_Vickers_aged.jpg', 'Trinity_Nicole_Elliott.jpg', 'Lauren_Elizabeth_Johnson_aged.jpg', 'Yue_Zhou_aged.jpg', 'John_William_Null.jpg', 'Songlin_Liu_aged.jpg', 'Elizabeth_G_Higgins_aged.jpg', 'Eric_Mayo.jpg', 'Kaamil_Farooqi.jpg', 'Chioke_K_Bellamy_aged.jpg', 'Daniel_Madden_Sheedy.jpg', 'Dongqiao_Tang.jpg', 'Boyan_Wei.jpg', 'Mengyao_Liu_aged.jpg', 'Shanay_Nimish_Sonawala.jpg', 'Nathalie_Lisa_Friedman.jpg', 'Mary_Martha_Milcoff_aged.jpg']
def face_load_source():
face_dict = {}
for file in jpeg_files:
try:
img_file = "/content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/{}".format(file)
print(img_file)
# load the face
_t = face_recognition.load_image_file(img_file)
# generate the encoding
_x = face_recognition.face_encodings(_t)[0]
face_dict[img_file] = _x
except IndexError:
_x = 0
face_dict[img_file] = _x
print("No face was found in the image.")
return face_dict
face_source_encodings = face_load_source()
/content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Angela_Waszkiewicz.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Whitney_Joyce_Isbell.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Manling_Shi_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Joseph_Macon_Barker_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Yue_Zhou.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jodie_Elizabeth_Brine.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Meryl_Criswell_Kaduboski.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Boyu_Zheng_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Tianyi_Yin_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Qian_Chen.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Yuchen_Qin_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Shuzhe_Wang_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Christopher_Craig_Kenney_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Tianyu_Cui.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jacob_Philip_Rockaway.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Kendall_Ashley_Hilson.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Marcus_Cole_cooper.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Yilin_Wang.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Helen_Kidane_Haile.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Edward_Cheongjoun_Hyun.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Bintong_Zhai.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Shanay_Nimish_Sonawala_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Alfredo_Enrique_Suarez_aged_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Anoush_U_Shah_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Benjamin_Pyung-Hwa_Aikens_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Logan_Trujillo_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Michelle_Monica_Saikali.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Amanda_Renner_Gild.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Cheuk_Yui_Marcus_Chan.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Garhett_William_Sessions.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Haopeng_Liu_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Lu_Xing.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Natalie_Weiner.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Christopher_David_Koontz.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jodie_Elizabeth_Brine_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Shenghao_Yang.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Zihe_Liu_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Shenzhe_Lian_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Kyle_John_Wiblishauser_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Kaitlyn_R_Vickers.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Millie_C_Garrett_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Ruochen_Bao_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Zaul_Alexander_Perez_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Chioke_K_Bellamy.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Alfredo_Enrique_Suarez_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Reid_Powers_Walker.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jiaming_Zhang_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Hanshuai_Shi.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jiahao_Ma.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Boyu_Zheng.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Ruochen_Bao.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Cole_Ritchey_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Skylour_Sebastian_Winakur.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Ryan_Marek_Smith_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Guangxin_Bao_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jax_Francis_Revfi.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Estefani_Santiago_Gatica.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Harve_E_Criqui_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Anne_M_Perry_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Hangfei_Lyu.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Xiyan_Huang_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Millie_C_Garrett.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Hanshuai_Shi_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Andrew_Dubois_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Manling_Shi.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Elizabeth_G_Higgins.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Wei_Tan_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Dillon_Hunter_Aryeh_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Nicolson_Charles_Panos_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Evan_Anderson_Gilbert.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Chengzhan_Shen_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Xiyue_Yu_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Edward_Cheongjoun_Hyun_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jacob_Philip_Rockaway_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Emmanuel_Thomas_George_Skora.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Mengyao_Liu.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Zihe_Liu.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Eric_Mayo_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Raleigh_Coolidge_Conway_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Marcus_Cole_cooper_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Natalie_Weiner_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Zaul_Alexander_Perez.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jackson_R_Harper_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Hangfei_Lyu_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Andrew_Lloyd_Loftis.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Savannah_Kayla_Littlejohn.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Bingnan_Lei_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jax_Francis_Revfi_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Niklas_Jozef_Baldis.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Xiaoyang_Zheng.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Xiyan_Huang.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Haopeng_Liu.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Andrea_Chen_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Khushi_Arya.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Patrick_Ryan_Weimaker.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Wentong_Guo_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Xingyu_Wan.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jeremy_Brian_Nurding.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Khushi_Arya_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Yiming_Xu_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Sebastian_Andres_Lopez-Ibanez_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Joseph_Macon_Barker.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jiaming_Zhang.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jiahua_Wu_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Logan_Trujillo.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Evan_Anderson_Gilbert_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Kyle_John_Wiblishauser.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Mary_Martha_Milcoff.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Cole_Ritchey.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Hewei_Shen_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/John_William_Null_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Anthony_X_Ayala_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Luying_Huang_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Allen_Gail_Smith_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Alicia_Rand_Bodoia_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/George_Basil_Economus.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Qian_Chen_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Max_Koontz.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Bintong_Zhai_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Latham_Alexander_Weaver_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Angela_Waszkiewicz_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Nathanael_Hunter_Kraus_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Anoush_U_Shah.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Lu_Xing_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Chengzhan_Shen.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Yuchen_Qin.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Xiaoyang_Zheng_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Amanda_Renner_Gild_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Mary_Michele_Troise_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Shenzhe_Lian.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jiahao_Ma_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jennifer_Ontiveros-Olivas.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Sebastian_Andres_Lopez-Ibanez.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jeremy_Brian_Nurding_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Allen_Gail_Smith.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Shenger_Zhou_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Shenghao_Yang_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jackson_R_Harper.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Estefani_Santiago_Gatica_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Kaushik_Rajaram_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Andrew_Lloyd_Loftis_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Guangxin_Bao.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Nathalie_Lisa_Friedman_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Siyu_Lin_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Alicia_Rand_Bodoia.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Kayla_Marie_Williams_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Yanghua_Zhang_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Bryce_Charles_Drynan.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Anne_M_Perry.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Boyan_Wei_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Bingnan_Lei.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Qin_Miao_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Savannah_Kayla_Littlejohn_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Tianyi_Yin.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Songlin_Liu.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Helen_Kidane_Haile_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Nicholas_J_Sundberg_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Luying_Huang.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Tianyi_Chen_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Michelle_Monica_Saikali_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Michael_Jason_Vejsiri.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Kayla_Marie_Williams.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Meryl_Criswell_Kaduboski_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Xiyue_Yu.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Latham_Alexander_Weaver.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Kaushik_Rajaram.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Yutong_Ouyang.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Garhett_William_Sessions_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Andrea_Chen.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jiahua_Wu.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Cheuk_Yui_Marcus_Chan_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Xiaoyu_Zong.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Dillon_Hunter_Aryeh.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Siyu_Lin.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Whitney_Joyce_Isbell_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Andrew_Dubois.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Daniel_Madden_Sheedy_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Mary_Michele_Troise.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Shenger_Zhou.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Skylour_Sebastian_Winakur_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Nathanael_Hunter_Kraus.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Tianyu_Cui_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jiacheng_Wang_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Dongqiao_Tang_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Michael_Jason_Vejsiri_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Max_Koontz_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Tianyi_Chen.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Yiming_Xu.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Patrick_Ryan_Weimaker_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Raleigh_Coolidge_Conway.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Shuzhe_Wang.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Lauren_Elizabeth_Johnson.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/George_Basil_Economus_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Hewei_Shen.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Reid_Powers_Walker_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Wentong_Guo.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Xiaoyu_Zong_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Samantha_O_Brien_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Wei_Tan.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jennifer_Ontiveros-Olivas_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Joseph_Miller_Hirsch_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Trinity_Nicole_Elliott_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Bryce_Charles_Drynan_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Benjamin_Pyung-Hwa_Aikens.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jiacheng_Wang.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Ryan_Marek_Smith.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Harve_E_Criqui.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Emmanuel_Thomas_George_Skora_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Meghan_O_Malley_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Yutong_Ouyang_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Joseph_Miller_Hirsch.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Kendall_Ashley_Hilson_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Qin_Miao.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Xiaoya_Luo.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Samantha_O_Brien.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Christopher_David_Koontz_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Yanghua_Zhang.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Nicolson_Charles_Panos.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Niklas_Jozef_Baldis_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Meghan_O_Malley.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Bingyu_Li_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Yilin_Wang_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Anthony_X_Ayala.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Christopher_Craig_Kenney.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Xingyu_Wan_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Alfredo_Enrique_Suarez.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Xiaoya_Luo_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Bingyu_Li.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Nicholas_J_Sundberg.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Kaamil_Farooqi_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Kaitlyn_R_Vickers_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Trinity_Nicole_Elliott.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Lauren_Elizabeth_Johnson_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Yue_Zhou_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/John_William_Null.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Songlin_Liu_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Elizabeth_G_Higgins_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Eric_Mayo.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Kaamil_Farooqi.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Chioke_K_Bellamy_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Daniel_Madden_Sheedy.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Dongqiao_Tang.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Boyan_Wei.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Mengyao_Liu_aged.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Shanay_Nimish_Sonawala.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Nathalie_Lisa_Friedman.jpg /content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Mary_Martha_Milcoff_aged.jpg
This was actually my 13th reason because my pickle didn't work when re-running everything because I forgot to make a heatmap when I first created the notebook.
import pickle
# Save the face encodings to a file
with open('encodings.pickle', 'wb') as f:
pickle.dump(face_source_encodings, f)
# Load the encodings pickle if you lose it
import pickle
with open("encodings.pickle", "rb") as f:
face_source_encodings = pickle.load(f)
# convert to dataframe
data_items = list(face_source_encodings.items())
# Create DataFrame
face_df = pd.DataFrame(data_items, columns=['image', 'encoding'])
face_df.head()
| image | encoding | |
|---|---|---|
| 0 | /content/drive/MyDrive/CSV Uploads/msba_studen... | [-0.04089708626270294, 0.07306627184152603, 0.... |
| 1 | /content/drive/MyDrive/CSV Uploads/msba_studen... | [-0.09973771870136261, 0.07061269134283066, 0.... |
| 2 | /content/drive/MyDrive/CSV Uploads/msba_studen... | [-0.12598378956317902, 0.15065625309944153, 0.... |
| 3 | /content/drive/MyDrive/CSV Uploads/msba_studen... | [-0.11492722481489182, 0.1706923544406891, 0.0... |
| 4 | /content/drive/MyDrive/CSV Uploads/msba_studen... | [-0.08087983727455139, 0.053938671946525574, 0... |
def compare_faces_df2(sourceFile, targetFile):
similarity = 0
try:
index1 = '/content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/' + str(sourceFile)
index2 = '/content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/' + str(targetFile)
encoding1 = face_source_encodings[index1]
encoding2 = face_source_encodings[index2]
distance = face_recognition.face_distance([encoding1], encoding2)[0]
similarity = 1-distance
except Exception as e:
print(f"An error occurred: {e}")
return similarity
match_file2 = pd.read_excel("/content/drive/MyDrive/CSV Uploads/FinalMatchSourceTarget.xlsx")
# idk why but we gotta replace '.jpeg' with '.jpg'
match_file2['source_image'] = match_file2['source_image'].str.replace('.jpeg','.jpg')
match_file2['target_image'] = match_file2['target_image'].str.replace('.jpeg','.jpg')
match_file2 = match_file2[match_file2['source_image'] != '_aged.jpg']
match_file2 = match_file2[match_file2['target_image'] != '_aged.jpg']
match_file2['source_image'] = match_file2['source_image'].str.strip()
match_file2['target_image'] = match_file2['target_image'].str.strip()
<ipython-input-26-a502db01e682>:4: FutureWarning: The default value of regex will change from True to False in a future version.
match_file2['source_image'] = match_file2['source_image'].str.replace('.jpeg','.jpg')
<ipython-input-26-a502db01e682>:5: FutureWarning: The default value of regex will change from True to False in a future version.
match_file2['target_image'] = match_file2['target_image'].str.replace('.jpeg','.jpg')
match_file2.head()
| match_id | source_image | name | target_image | expected_match | |
|---|---|---|---|---|---|
| 0 | 100 | Bingyu_Li.jpg | Bingyu_Li | Bingyu_Li_aged.jpg | match |
| 1 | 101 | Whitney_Joyce_Isbell.jpg | Whitney_Joyce_Isbell | Whitney_Joyce_Isbell_aged.jpg | match |
| 2 | 102 | Qian_Chen.jpg | Qian_Chen | Qian_Chen_aged.jpg | match |
| 3 | 103 | Hanshuai_Shi.jpg | Hanshuai_Shi | Hanshuai_Shi_aged.jpg | match |
| 4 | 104 | Ruochen_Bao.jpg | Ruochen_Bao | Ruochen_Bao_aged.jpg | match |
match_file2['match_similarity'] = match_file2.apply(lambda row: compare_faces_df2(row['source_image'], row['target_image']), axis=1)
An error occurred: '/content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jash_Sanjaybhai_Vachhani.jpg' An error occurred: '/content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Quinn_Poole.jpg' An error occurred: '/content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Quinn_Poole_aged.jpg' An error occurred: '/content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/Jash_Sanjaybhai_Vachhani.jpg' An error occurred: '/content/drive/MyDrive/CSV Uploads/msba_students_2024/content/SAM/2024_students/.ipynb_checkpoints'
match_file2['predicted_match'] = np.where(match_file2['match_similarity'] > 0.5, 'match','no match')
match_file2
| match_id | source_image | name | target_image | expected_match | match_similarity | predicted_match | |
|---|---|---|---|---|---|---|---|
| 0 | 100 | Bingyu_Li.jpg | Bingyu_Li | Bingyu_Li_aged.jpg | match | 0.629741 | match |
| 1 | 101 | Whitney_Joyce_Isbell.jpg | Whitney_Joyce_Isbell | Whitney_Joyce_Isbell_aged.jpg | match | 0.562203 | match |
| 2 | 102 | Qian_Chen.jpg | Qian_Chen | Qian_Chen_aged.jpg | match | 0.559150 | match |
| 3 | 103 | Hanshuai_Shi.jpg | Hanshuai_Shi | Hanshuai_Shi_aged.jpg | match | 0.591559 | match |
| 4 | 104 | Ruochen_Bao.jpg | Ruochen_Bao | Ruochen_Bao_aged.jpg | match | 0.296038 | no match |
| ... | ... | ... | ... | ... | ... | ... | ... |
| 171 | 271 | Yutong_Ouyang.jpg | NaN | Max_Koontz_aged.jpg | no match | 0.080805 | no match |
| 172 | 272 | Andrea_Chen.jpg | NaN | Joseph_Macon_Barker_aged.jpg | no match | 0.056572 | no match |
| 173 | 273 | Xiyan_Huang.jpg | NaN | Kayla_Marie_Williams_aged.jpg | no match | 0.174988 | no match |
| 174 | 274 | Angela_Waszkiewicz.jpg | NaN | Chengzhan_Shen_aged.jpg | no match | 0.142100 | no match |
| 175 | 275 | Chioke_K_Bellamy.jpg | NaN | Yuchen_Qin_aged.jpg | no match | 0.017787 | no match |
174 rows × 7 columns
from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score
# Calculate confusion matrix
matrix = confusion_matrix(match_file2['expected_match'],
match_file2['predicted_match'],
labels=["match", "no match"])
print(matrix)
[[110 15] [ 2 47]]
# Calculate confusion matrix
y_true = match_file2['expected_match']
y_pred = match_file2['predicted_match']
labels = ["match", "no match"]
matrix = confusion_matrix(y_true, y_pred, labels=labels)
# Calculate Accuracy, Precision and Recall
accuracy = accuracy_score(y_true, y_pred)
precision = precision_score(y_true, y_pred, pos_label="match")
recall = recall_score(y_true, y_pred, pos_label="match")
print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)
Accuracy: 0.9022988505747126 Precision: 0.9821428571428571 Recall: 0.88
# Plotting using seaborn
plt.figure(figsize=(8, 6))
sns.heatmap(matrix, annot=True, fmt="d", xticklabels=labels, yticklabels=labels, cmap="Blues")
plt.title("Confusion Matrix")
plt.ylabel('Actual')
plt.xlabel('Predicted')
plt.show()